package com.ruoyi.ysg.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.ysg.domain.YsgCourse;
import com.ruoyi.ysg.domain.YsgCourseSchedule;
import com.ruoyi.ysg.domain.YsgCourseStudent;
import com.ruoyi.ysg.domain.YsgStudent;
import org.apache.ibatis.annotations.Param;

/**
 * 课程管理Mapper接口
 *
 * @author xsz
 * @date 2025-09-24
 */
public interface YsgCourseMapper
{
    /**
     * 查询课程管理
     *
     * @param id 课程管理主键
     * @return 课程管理
     */
    public YsgCourse selectYsgCourseById(Long id);

    /**
     * 查询课程管理列表
     *
     * @param ysgCourse 课程管理
     * @return 课程管理集合
     */
    public List<YsgCourse> selectYsgCourseList(YsgCourse ysgCourse);

    /**
     * 新增课程管理
     *
     * @param ysgCourse 课程管理
     * @return 结果
     */
    public int insertYsgCourse(YsgCourse ysgCourse);

    /**
     * 修改课程管理
     *
     * @param ysgCourse 课程管理
     * @return 结果
     */
    public int updateYsgCourse(YsgCourse ysgCourse);

    /**
     * 删除课程管理
     *
     * @param id 课程管理主键
     * @return 结果
     */
    public int deleteYsgCourseById(Long id);

    /**
     * 批量删除课程管理
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYsgCourseByIds(Long[] ids);

    List<YsgStudent> selectAssociatedStudentList(YsgCourseStudent ysgCourseStudent);

    void insertCourseStudent(YsgCourseStudent ysgCourseStudent);

    void deleteCourseStudent(YsgCourseStudent ysgCourseStudent);

    List<YsgCourseSchedule> selectCourseSchedule(YsgCourseSchedule ysgCourseSchedule);

    void insertCourseSchedule(@Param("list") List<YsgCourseSchedule> ysgCourseSchedule);

    List<Map<Long, Object>> selectStudentCount(@Param("list")List<Long> classIds);
}
